package cn.vehicle.service.config;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 系统配置项实体类
 * <p>
 * 用于描述系统中的单个配置项，包括配置键（key）、默认值（defValue）和数据类型（clazz）。
 * 通过泛型设计支持多类型配置项（如 String、Integer、Boolean 等），
 * 以便系统在读取或更新配置时具备类型安全性。
 * </p>
 *
 * <p>主要作用：</p>
 * <ul>
 *   <li>定义配置项的结构；</li>
 *   <li>在 {@link cn.vehicle.service.config.SystemConfig} 中被统一管理；</li>
 *   <li>为数据库或配置中心提供默认值支持。</li>
 * </ul>
 *
 * @param <T> 配置项的数据类型
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SystemConfigItem<T> {

    // 配置项的唯一标识符，用于系统内查找与存储
    private String key;

    // 配置项的默认值，当数据库或配置中心未设置时使用该值
    private T defValue;

    // 配置项对应的 Java 类型，用于类型安全的反序列化与转换
    private Class<T> clazz;
}
